package com.cmwa.scbp.business.infodisclosure.regulatoryreport.service;

import java.io.OutputStream;
import java.util.List;
import java.util.Map;

import org.springframework.stereotype.Service;

import com.cmwa.scbp.base.mvc.entity.Page;
import com.cmwa.scbp.base.mvc.entity.SearchParam;
import com.cmwa.scbp.business.infodisclosure.regulatoryreport.entity.RegulatoryReportVo;
import com.cmwa.scbp.sys.attach.entity.AttachVo;
import com.cmwa.scbp.sys.institution.entity.InstitutionVo;

@Service
public interface RegulatoryReportService {
	/**
	 * 查询监管报告列表数据
	 * @param param
	 * @return
	 */
	public Page<RegulatoryReportVo> getRegulatoryReportListPage(SearchParam param) ;
	/**
	 * 获取监管报告饼图需要的数据
	 * @param param
	 * @return
	 */
	public List<Map<String,String>> getReportChart(SearchParam param) ;
	/**
	 * 新增监管报告
	 * @param regulatoryReportVo
	 * @param attIds TODO
	 */
	public void addRegulatoryReport(RegulatoryReportVo regulatoryReportVo, String attIds);
	/**
	 * 批量下载监管报告附件
	 * @param sp
	 * @param response
	 */
	public void regulatoryReportBatchDown(SearchParam sp,OutputStream out) throws Exception;
	
	/**
	 * 新增监管报告简化版
	 * @param regulatoryReportVo
	 * @param attIds TODO
	 */
	public void addRegulatoryReportNew(RegulatoryReportVo regulatoryReportVo, String attIds,String flag);
	/**
	 * 监管报告信息查询简化版
	 * @param param
	 * @return
	 */
	public RegulatoryReportVo getRegulatoryReportInfoNew(SearchParam param);
	/**
	 * 查询监管报告列表数据(简化版本)
	 * @param param
	 * @return
	 */
	public Page<RegulatoryReportVo> getRegulatoryReportListPageNew(SearchParam param);
	/**
	 * 根据参数查询报告附件信息简化版
	 * @param param
	 * @return
	 */
	public List<AttachVo> getReportAttInfoNew(SearchParam param);
	/**
	 * 导出附件信息
	 * @param reportIds
	 * @param out
	 * @throws Exception
	 */
	public void regulatoryReportDownNew(SearchParam sp,OutputStream out) throws Exception;
	/**
	 * 根据条件查询监管报告Id(用于首页监管报告披量下载)
	 * @param param
	 * @return
	 */
	public List<String> getRegulatoryReportIdNew(SearchParam param);
	/**
	 * 查询监管报告的机构
	 * @return
	 */
	public List<InstitutionVo> getReportInstList();
	/**
	 * 根据监管机构id查询监管报告类型（用于下拉框联动）
	 * @param instId
	 * @param reportTypeName TODO
	 * @return
	 */
	public List<Map<String, String>> getReportTypesByInst(String instId, String reportName);
}
